C++17 pmr Allokatoren und STL Container in Embedded Anwendungen von Richard Kaiser
Vom 17. bis 19. Mai fand die „
ADC++ Konferenz
2021“ in München statt.
Video zum Vortrag von Richard Kaiser mit dem Titel "C++17 pmr Allokatoren und STL Container in Embedded Anwendungen" anlässlich der ADC++ 2021.
In der Voreinstellung reservieren die Container der C++ Standardbibliothek ihren Speicher mit new und geben ihn mit delete wieder frei. Diese Aufrufe haben keine determinierten Ausführungszeiten und können zu einer Speicherfragmentierung führen. In vielen embedded Anwendungen kann das nicht toleriert werden. Die AUTOSAR Regel A18-5-5 verlangt, dass Speicherverwaltungsfunktionen die folgenden Anforderungen erfüllen müssen:
(a) deterministic behavior resulting with the existence of worst-case execution time,
(b) avoiding memory fragmentation,
(c) avoid running out of memory,
(d) avoiding mismatched allocations or deallocations,
(e) no dependence on non-deterministic calls to kernel.
Deshalb dürfen die Container der C++ Standardbibliothek in solchen Anwendungen nicht verwendet werden. Mit C++17 kann man STL Container aber doch auch in vielen embedded Anwendungen verwenden. Die neuen Allokatoren aus dem namespace std::pmr (polymorphic memory resources) können so verwendet werden, dass die Anforderungen (a), (b) und (e) erfüllt werden. Da (d) für die STL erfüllt ist, können die Container der C++ Standardbibliothek mit diesen pmr Allokatoren verwendet werden, wenn man (c) zusichern kann. Das ist für viele (aber nicht alle) embedded Anwendungen möglich. Damit kann man das erste Mal in der Geschichte von C++ die Vorteile der STL Container in einem großen Teil der embedded Welt nutzen.
Auf unserem Video-Portal studios.ppedv.de findet man eine breite Basis an Informationen rund um das Thema IT.
Die Schwerpunkte bilden dabei nicht nur Microsoft-Technologien. Themen wie Visual Studio, .net, C++, C#, Angular JS und viele mehr werden von unseren professionellen Trainern detailliert erklärt.